package com.njts.cricule.src.com.njts.recycle;

import java.util.Scanner;

/**
 * @author David GE
 * Date  2025/11/12
 * 一对兔子，从出生后第3个月起每个月都生一对兔子。小免子长到第3个月后每个月又生一对兔子。假如兔子都不死，请问第1个月出生的一对免子，至少需要繁衍到第几个月时免子总数才可以达到N对？
 * 输入格式：
 * 输入在一行中给出不超过10000的正整数N。
 * 输出格式：
 * 在一行中输出免子总数达到N最少需要的月数。
 * 输入样例：
 * 30
 *
 * 输出样例：
 * 9
 */
public class RabbitProblem {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
       // 1 2 3 4 5  6 ...... // 斐波拉契问题 迭代思想
        // 1 1 2 3 5 8
        // b res res
        //    a  b  res
        int a =1;
        int b =1;
        int res =0;
        for (int i=3;;i++){
            if (n==1){
                System.out.println(1);
                break;
            }
            res =a+b;// 每一个月的兔子数等于前两个月的和
            if (res>=n){//循环终止条件
                System.out.println(i);
                break;// break 强行中断循环
            }
            // 变量迭代,首尾相接,覆盖
            a=b;
            b=res;
        }


    }
}
